var net = require("net");

var server = net.createServer(function(client_sock){
    console.log('client comming', client_sock.remoteAddress,client_sock.remotePort);

    // 客户端断开连接的时候处理,用户断线离开了
	client_sock.on("close", function() {
		console.log("close socket");
	});

    client_sock.on("data", function(data) {
		console.log("client send data = ",data);

		client_sock.write("goodbye!!!");

		// client_sock.end(); // 正常关闭
	});

    client_sock.on("disconnect",function(c){
        console.log("client disconnect!");

    });

    client_sock.on("error",function(err){
        console.log("error",err);
    });

    client_sock.on("end",function(err){
        console.log("end",err);
    });
});

server.on("close", function() {
	console.log("server stop listener");
});

server.on("connection", function() {
	console.log("server connection");
});

// 监听发生错误的时候调用
server.on("error", function(err) {
	console.log("listen error");
});

// 当我开始监听的时候就会调用这个回掉函数
server.on("listening", function() {
	console.log("start listening...");
});

// 编写代码，指示这个server监听到哪个端口上面。
// 127.0.0.1: 6080
// node就会来监听我们的server,等待连接接入
server.listen({
    port:6080,
    houst:"127.0.0.1",
    exclusive:true
});

//停止node对server的监听事件处理，那么node就没有其它事件需要处理，所以就推出了，一般服务启动不需要这个么做
// server.unref();//取消node对server的事件的监听